/**
 */
package ms.unicorn.dsl.unicornDSL.util;

import ms.unicorn.dsl.unicornDSL.*;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see ms.unicorn.dsl.unicornDSL.UnicornDSLPackage
 * @generated
 */
public class UnicornDSLSwitch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static UnicornDSLPackage modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public UnicornDSLSwitch()
  {
    if (modelPackage == null)
    {
      modelPackage = UnicornDSLPackage.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case UnicornDSLPackage.MODULE:
      {
        Module module = (Module)theEObject;
        T result = caseModule(module);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.UNICORN_LIBRARY:
      {
        UnicornLibrary unicornLibrary = (UnicornLibrary)theEObject;
        T result = caseUnicornLibrary(unicornLibrary);
        if (result == null) result = caseModule(unicornLibrary);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.UNICORN_LANGUAGE:
      {
        UnicornLanguage unicornLanguage = (UnicornLanguage)theEObject;
        T result = caseUnicornLanguage(unicornLanguage);
        if (result == null) result = caseModule(unicornLanguage);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.UNICORN_CONVERSION:
      {
        UnicornConversion unicornConversion = (UnicornConversion)theEObject;
        T result = caseUnicornConversion(unicornConversion);
        if (result == null) result = caseModule(unicornConversion);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.INCLUDE_STATEMENT:
      {
        IncludeStatement includeStatement = (IncludeStatement)theEObject;
        T result = caseIncludeStatement(includeStatement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.IMPORT_STATEMENT:
      {
        ImportStatement importStatement = (ImportStatement)theEObject;
        T result = caseImportStatement(importStatement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.NAMESPACE:
      {
        Namespace namespace = (Namespace)theEObject;
        T result = caseNamespace(namespace);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XEXPRESSION:
      {
        XExpression xExpression = (XExpression)theEObject;
        T result = caseXExpression(xExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.IDENTIFIED_ELEMENT:
      {
        IdentifiedElement identifiedElement = (IdentifiedElement)theEObject;
        T result = caseIdentifiedElement(identifiedElement);
        if (result == null) result = caseXExpression(identifiedElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.LANGUAGE_ELEMENT:
      {
        LanguageElement languageElement = (LanguageElement)theEObject;
        T result = caseLanguageElement(languageElement);
        if (result == null) result = caseIdentifiedElement(languageElement);
        if (result == null) result = caseXExpression(languageElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XRETURN_STATEMENT:
      {
        XReturnStatement xReturnStatement = (XReturnStatement)theEObject;
        T result = caseXReturnStatement(xReturnStatement);
        if (result == null) result = caseXExpression(xReturnStatement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XFEATURE_CALL:
      {
        XFeatureCall xFeatureCall = (XFeatureCall)theEObject;
        T result = caseXFeatureCall(xFeatureCall);
        if (result == null) result = caseXExpression(xFeatureCall);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.CALL_PARAMETER:
      {
        CallParameter callParameter = (CallParameter)theEObject;
        T result = caseCallParameter(callParameter);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XLITERAL:
      {
        XLiteral xLiteral = (XLiteral)theEObject;
        T result = caseXLiteral(xLiteral);
        if (result == null) result = caseXExpression(xLiteral);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XNULL_LITERAL:
      {
        XNullLiteral xNullLiteral = (XNullLiteral)theEObject;
        T result = caseXNullLiteral(xNullLiteral);
        if (result == null) result = caseXLiteral(xNullLiteral);
        if (result == null) result = caseXExpression(xNullLiteral);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XINT_LITERAL:
      {
        XIntLiteral xIntLiteral = (XIntLiteral)theEObject;
        T result = caseXIntLiteral(xIntLiteral);
        if (result == null) result = caseXLiteral(xIntLiteral);
        if (result == null) result = caseXExpression(xIntLiteral);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XFLOAT_LITERAL:
      {
        XFloatLiteral xFloatLiteral = (XFloatLiteral)theEObject;
        T result = caseXFloatLiteral(xFloatLiteral);
        if (result == null) result = caseXLiteral(xFloatLiteral);
        if (result == null) result = caseXExpression(xFloatLiteral);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XSTRING_LITERAL:
      {
        XStringLiteral xStringLiteral = (XStringLiteral)theEObject;
        T result = caseXStringLiteral(xStringLiteral);
        if (result == null) result = caseXLiteral(xStringLiteral);
        if (result == null) result = caseXExpression(xStringLiteral);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XBOOL_LITERAL:
      {
        XBoolLiteral xBoolLiteral = (XBoolLiteral)theEObject;
        T result = caseXBoolLiteral(xBoolLiteral);
        if (result == null) result = caseXLiteral(xBoolLiteral);
        if (result == null) result = caseXExpression(xBoolLiteral);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.THEME:
      {
        Theme theme = (Theme)theEObject;
        T result = caseTheme(theme);
        if (result == null) result = caseLanguageElement(theme);
        if (result == null) result = caseIdentifiedElement(theme);
        if (result == null) result = caseXExpression(theme);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.DSL_CONVERTION_SCHEME:
      {
        DslConvertionScheme dslConvertionScheme = (DslConvertionScheme)theEObject;
        T result = caseDslConvertionScheme(dslConvertionScheme);
        if (result == null) result = caseLanguageElement(dslConvertionScheme);
        if (result == null) result = caseIdentifiedElement(dslConvertionScheme);
        if (result == null) result = caseXExpression(dslConvertionScheme);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.NAMED_PROPERTY:
      {
        NamedProperty namedProperty = (NamedProperty)theEObject;
        T result = caseNamedProperty(namedProperty);
        if (result == null) result = caseIdentifiedElement(namedProperty);
        if (result == null) result = caseXExpression(namedProperty);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.ELEMENT_FIELD:
      {
        ElementField elementField = (ElementField)theEObject;
        T result = caseElementField(elementField);
        if (result == null) result = caseIdentifiedElement(elementField);
        if (result == null) result = caseXExpression(elementField);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XJAVA_TYPE_IMPORT:
      {
        XJavaTypeImport xJavaTypeImport = (XJavaTypeImport)theEObject;
        T result = caseXJavaTypeImport(xJavaTypeImport);
        if (result == null) result = caseIdentifiedElement(xJavaTypeImport);
        if (result == null) result = caseXExpression(xJavaTypeImport);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XVARIABLE_DECLARATION:
      {
        XVariableDeclaration xVariableDeclaration = (XVariableDeclaration)theEObject;
        T result = caseXVariableDeclaration(xVariableDeclaration);
        if (result == null) result = caseIdentifiedElement(xVariableDeclaration);
        if (result == null) result = caseXExpression(xVariableDeclaration);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XFUNCTION_DECLARATION:
      {
        XFunctionDeclaration xFunctionDeclaration = (XFunctionDeclaration)theEObject;
        T result = caseXFunctionDeclaration(xFunctionDeclaration);
        if (result == null) result = caseIdentifiedElement(xFunctionDeclaration);
        if (result == null) result = caseXExpression(xFunctionDeclaration);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.FUNCTION_ARGUMENT:
      {
        FunctionArgument functionArgument = (FunctionArgument)theEObject;
        T result = caseFunctionArgument(functionArgument);
        if (result == null) result = caseIdentifiedElement(functionArgument);
        if (result == null) result = caseXExpression(functionArgument);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XASSIGN_EXPRESSION:
      {
        XAssignExpression xAssignExpression = (XAssignExpression)theEObject;
        T result = caseXAssignExpression(xAssignExpression);
        if (result == null) result = caseXExpression(xAssignExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XBOOL_EXPRESSION:
      {
        XBoolExpression xBoolExpression = (XBoolExpression)theEObject;
        T result = caseXBoolExpression(xBoolExpression);
        if (result == null) result = caseXExpression(xBoolExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XCOMPARATIVE_EXPRESSION:
      {
        XComparativeExpression xComparativeExpression = (XComparativeExpression)theEObject;
        T result = caseXComparativeExpression(xComparativeExpression);
        if (result == null) result = caseXExpression(xComparativeExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XADD_EXPRESSION:
      {
        XAddExpression xAddExpression = (XAddExpression)theEObject;
        T result = caseXAddExpression(xAddExpression);
        if (result == null) result = caseXExpression(xAddExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XMULT_EXPRESSION:
      {
        XMultExpression xMultExpression = (XMultExpression)theEObject;
        T result = caseXMultExpression(xMultExpression);
        if (result == null) result = caseXExpression(xMultExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XCAST_EXPRESSION:
      {
        XCastExpression xCastExpression = (XCastExpression)theEObject;
        T result = caseXCastExpression(xCastExpression);
        if (result == null) result = caseXExpression(xCastExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XUNARY_TERM:
      {
        XUnaryTerm xUnaryTerm = (XUnaryTerm)theEObject;
        T result = caseXUnaryTerm(xUnaryTerm);
        if (result == null) result = caseXExpression(xUnaryTerm);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XMEMBER_TERM:
      {
        XMemberTerm xMemberTerm = (XMemberTerm)theEObject;
        T result = caseXMemberTerm(xMemberTerm);
        if (result == null) result = caseXExpression(xMemberTerm);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XARRAY:
      {
        XArray xArray = (XArray)theEObject;
        T result = caseXArray(xArray);
        if (result == null) result = caseXExpression(xArray);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XARRAY_KEY:
      {
        XArrayKey xArrayKey = (XArrayKey)theEObject;
        T result = caseXArrayKey(xArrayKey);
        if (result == null) result = caseXExpression(xArrayKey);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XDATA_FRAME:
      {
        XDataFrame xDataFrame = (XDataFrame)theEObject;
        T result = caseXDataFrame(xDataFrame);
        if (result == null) result = caseXExpression(xDataFrame);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XBLOCK_EXPRESSION:
      {
        XBlockExpression xBlockExpression = (XBlockExpression)theEObject;
        T result = caseXBlockExpression(xBlockExpression);
        if (result == null) result = caseXExpression(xBlockExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XPARENTHESIZED_EXPRESSION:
      {
        XParenthesizedExpression xParenthesizedExpression = (XParenthesizedExpression)theEObject;
        T result = caseXParenthesizedExpression(xParenthesizedExpression);
        if (result == null) result = caseXExpression(xParenthesizedExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XNAME_EXPRESSION:
      {
        XNameExpression xNameExpression = (XNameExpression)theEObject;
        T result = caseXNameExpression(xNameExpression);
        if (result == null) result = caseXExpression(xNameExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XCONSTRUCTION_EXPRESSION:
      {
        XConstructionExpression xConstructionExpression = (XConstructionExpression)theEObject;
        T result = caseXConstructionExpression(xConstructionExpression);
        if (result == null) result = caseXExpression(xConstructionExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XINIT_OBJECT_EXPRESSION:
      {
        XInitObjectExpression xInitObjectExpression = (XInitObjectExpression)theEObject;
        T result = caseXInitObjectExpression(xInitObjectExpression);
        if (result == null) result = caseXExpression(xInitObjectExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XIF_EXPRESSION:
      {
        XIfExpression xIfExpression = (XIfExpression)theEObject;
        T result = caseXIfExpression(xIfExpression);
        if (result == null) result = caseXExpression(xIfExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XWHILE_EXPRESSION:
      {
        XWhileExpression xWhileExpression = (XWhileExpression)theEObject;
        T result = caseXWhileExpression(xWhileExpression);
        if (result == null) result = caseXExpression(xWhileExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XFOR_EXPRESSION:
      {
        XForExpression xForExpression = (XForExpression)theEObject;
        T result = caseXForExpression(xForExpression);
        if (result == null) result = caseXExpression(xForExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case UnicornDSLPackage.XFOR_CONTROL_VARIABLE:
      {
        XForControlVariable xForControlVariable = (XForControlVariable)theEObject;
        T result = caseXForControlVariable(xForControlVariable);
        if (result == null) result = caseIdentifiedElement(xForControlVariable);
        if (result == null) result = caseXExpression(xForControlVariable);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Module</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Module</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseModule(Module object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Unicorn Library</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Unicorn Library</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnicornLibrary(UnicornLibrary object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Unicorn Language</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Unicorn Language</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnicornLanguage(UnicornLanguage object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Unicorn Conversion</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Unicorn Conversion</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnicornConversion(UnicornConversion object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Include Statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Include Statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIncludeStatement(IncludeStatement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Import Statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Import Statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseImportStatement(ImportStatement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Namespace</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Namespace</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamespace(Namespace object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XExpression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XExpression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXExpression(XExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Identified Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Identified Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseIdentifiedElement(IdentifiedElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Language Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Language Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLanguageElement(LanguageElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XReturn Statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XReturn Statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXReturnStatement(XReturnStatement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XFeature Call</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XFeature Call</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXFeatureCall(XFeatureCall object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Call Parameter</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Call Parameter</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCallParameter(CallParameter object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XLiteral</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XLiteral</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXLiteral(XLiteral object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XNull Literal</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XNull Literal</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXNullLiteral(XNullLiteral object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XInt Literal</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XInt Literal</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXIntLiteral(XIntLiteral object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XFloat Literal</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XFloat Literal</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXFloatLiteral(XFloatLiteral object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XString Literal</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XString Literal</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXStringLiteral(XStringLiteral object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XBool Literal</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XBool Literal</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXBoolLiteral(XBoolLiteral object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Theme</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Theme</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTheme(Theme object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Dsl Convertion Scheme</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Dsl Convertion Scheme</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDslConvertionScheme(DslConvertionScheme object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Named Property</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Named Property</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamedProperty(NamedProperty object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Element Field</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Element Field</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseElementField(ElementField object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XJava Type Import</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XJava Type Import</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXJavaTypeImport(XJavaTypeImport object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XVariable Declaration</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XVariable Declaration</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXVariableDeclaration(XVariableDeclaration object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XFunction Declaration</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XFunction Declaration</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXFunctionDeclaration(XFunctionDeclaration object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Function Argument</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Function Argument</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFunctionArgument(FunctionArgument object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XAssign Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XAssign Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXAssignExpression(XAssignExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XBool Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XBool Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXBoolExpression(XBoolExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XComparative Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XComparative Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXComparativeExpression(XComparativeExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XAdd Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XAdd Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXAddExpression(XAddExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XMult Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XMult Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXMultExpression(XMultExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XCast Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XCast Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXCastExpression(XCastExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XUnary Term</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XUnary Term</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXUnaryTerm(XUnaryTerm object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XMember Term</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XMember Term</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXMemberTerm(XMemberTerm object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XArray</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XArray</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXArray(XArray object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XArray Key</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XArray Key</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXArrayKey(XArrayKey object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XData Frame</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XData Frame</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXDataFrame(XDataFrame object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XBlock Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XBlock Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXBlockExpression(XBlockExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XParenthesized Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XParenthesized Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXParenthesizedExpression(XParenthesizedExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XName Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XName Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXNameExpression(XNameExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XConstruction Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XConstruction Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXConstructionExpression(XConstructionExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XInit Object Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XInit Object Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXInitObjectExpression(XInitObjectExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XIf Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XIf Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXIfExpression(XIfExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XWhile Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XWhile Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXWhileExpression(XWhileExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XFor Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XFor Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXForExpression(XForExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>XFor Control Variable</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>XFor Control Variable</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseXForControlVariable(XForControlVariable object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //UnicornDSLSwitch
